var fs = require('fs');
var Promise = require('bluebird');
var router = require('express').Router();
// 引用 wechat 库，详细请查看 https://github.com/node-webot/wechat
var wechat = require('wechat');
var config = {
    token: 'NvHR3ICyOYW5yPNpIV8CMKny',
    appid: 'wx16afc29e0689917a',
    encodingAESKey: 'xiN4DPTUSiMO7K8pXLKZxmq3rcKZctS5Isozd8yAXvK'
};

var WechatAPI = require('wechat-api');
var api = new WechatAPI('wxc7f5bfd56fa22317',
    '750af94cbf25195dd0d5941b1ed3bc22');

api.setEndpoint('api.weixin.qq.com');
api.setOpts({timeout: 15000});

//获取token
function getToken() {
    var defer = Promise.defer();
    api.getLatestToken(function (err, token) {
        console.log(token)
        defer.resolve(token.accessToken)
    });
    return defer.promise;
}

function add() {
    api.getUser("oOSzcwcS4Bx0lH1FRSiIwQ-BAn64", function (err,result) {
        console.log(err)
        console.log(result)
    });
}

//上传临时素材
// api.uploadMedia('/Users/liuchaoxue/work/Wechat/test.jpg', "image", function (err, result) {
//     console.log(result)
// TODO
//{ type: 'image',
//     media_id: 'lNg_RU0xzRyAbQDw3QQpvfjiQjaTVBwb34PEnzB9dvnQ8DYg7pXLMQtx98RDtebD',
//         created_at: 1513757584 }
// });

//获取临时素材
// api.getMedia('uBDa5KzyLjOtrejUrPpp8_2FTd1sXtj_W8_5atyyWZOGU3lmNn7_mMfu39HHSTON',function (err,result) {
//     console.log(result)
// });

//预览图片信息
// api.previewImage('oOSzcwcS4Bx0lH1FRSiIwQ-BAn64', 'uBDa5KzyLjOtrejUrPpp8_2FTd1sXtj_W8_5atyyWZOGU3lmNn7_mMfu39HHSTON',function (err,result) {
//     console.log(result)
// });

//上传永久素材
// api.uploadMaterial('/Users/liuchaoxue/work/Wechat/test.jpg', 'image', function (err, result) {
//     console.log(result)
// });

//永久图文素材
var news = {
    "articles": [
        {
            "title": '圣诞',
            "thumb_media_id": 'M0XuzDLwlXU9peuUrjb9Qe48uLr6nKjJx4RG0fDokCY',
            "author": 'liuchaoxue',
            "show_cover_pic": 1,
            "content": '新增永久素材\n' +
            '\n' +
            '\n' +
            '对于常用的素材，开发者可通过本接口上传到微信服务器，永久使用。新增的永久素材也可以在公众平台官网素材管理模块中查询管理。\n' +
            '\n' +
            '\n' +
            '请注意：\n' +
            '\n' +
            '\n' +
            '1、最近更新：永久图片素材新增后，将带有URL返回给开发者，开发者可以在腾讯系域名内使用（腾讯系域名外使用，图片将被屏蔽）。\n' +
            '\n' +
            '\n' +
            '2、公众号的素材库保存总数量有上限：图文消息素材、图片素材上限为5000，其他类型为1000。\n' +
            '\n' +
            '\n' +
            '3、素材的格式大小等要求与公众平台官网一致：\n' +
            '\n' +
            '\n' +
            '图片（image）: 2M，支持bmp/png/jpeg/jpg/gif格式\n' +
            '\n' +
            '\n' +
            '语音（voice）：2M，播放长度不超过60s，mp3/wma/wav/amr格式\n' +
            '\n' +
            '\n' +
            '视频（video）：10MB，支持MP4格式\n' +
            '\n' +
            '\n' +
            '缩略图（thumb）：64KB，支持JPG格式\n' +
            '\n' +
            '\n' +
            '4、图文消息的具体内容中，微信后台将过滤外部的图片链接，图片url需通过"上传图文消息内的图片获取URL"接口上传图片获取。\n' +
            '\n' +
            '\n' +
            '5、"上传图文消息内的图片获取URL"接口所上传的图片，不占用公众号的素材库中图片数量的5000个的限制，图片仅支持jpg/png格式，大小必须在1MB以下。\n' +
            '\n' +
            '\n' +
            '6、图文消息支持正文中插入自己帐号和其他公众号已群发文章链接的能力。',
            "content_source_url": 'http://blog.csdn.net/qq_28506819/article/details/77986569'
        }
    ]
}

//永久图文消息
// api.uploadNewsMaterial(news, function (err, result) {
//     console.log(result)
// });
// M0XuzDLwlXU9peuUrjb9Qc8o_ew72al1adP-f3ekr8Y
// M0XuzDLwlXU9peuUrjb9QbNwBIPf0qclaZ6iijp7JTg

//获取永久素材
// api.getMaterial('M0XuzDLwlXU9peuUrjb9Qc8o_ew72al1adP-f3ekr8Y', function (err, result) {
//     console.log(result)
// });

//获取数量
// api.getMaterialCount(function (err, result) {
//     console.log(result)
// });

// 获取素材列表(每天10次)
// api.getMaterials('news', 0, 10, function (err, result) {
    // console.log(err);
    // console.log(result)
// });

var list = {
    "item": [{
        "media_id": "M0XuzDLwlXU9peuUrjb9QbNwBIPf0qclaZ6iijp7JTg",
        "content": {
            "news_item": [{
                "title": "圣诞",
                "author": "liuchaoxue",
                "digest": "新增永久素材\n\n\n对于常用的素材，开发者可通过本接口上传到微信服务器，永久使用。新增的永久素材也可以在公众平",
                "content": "新增永久素材\n\n\n对于常用的素材，开发者可通过本接口上传到微信服务器，永久使用。新增的永久素材也可以在公众平台官网素材管理模块中查询管理。\n\n\n请注意：\n\n\n1、最近更新：永久图片素材新增后，将带有URL返回给开发者，开发者可以在腾讯系域名内使用（腾讯系域名外使用，图片将被屏蔽）。\n\n\n2、公众号的素材库保存总数量有上限：图文消息素材、图片素材上限为5000，其他类型为1000。\n\n\n3、素材的格式大小等要求与公众平台官网一致：\n\n\n图片（image）: 2M，支持bmp/png/jpeg/jpg/gif格式\n\n\n语音（voice）：2M，播放长度不超过60s，mp3/wma/wav/amr格式\n\n\n视频（video）：10MB，支持MP4格式\n\n\n缩略图（thumb）：64KB，支持JPG格式\n\n\n4、图文消息的具体内容中，微信后台将过滤外部的图片链接，图片url需通过\"上传图文消息内的图片获取URL\"接口上传图片获取。\n\n\n5、\"上传图文消息内的图片获取URL\"接口所上传的图片，不占用公众号的素材库中图片数量的5000个的限制，图片仅支持jpg/png格式，大小必须在1MB以下。\n\n\n6、图文消息支持正文中插入自己帐号和其他公众号已群发文章链接的能力。",
                "content_source_url": "http://blog.csdn.net/qq_28506819/article/details/77986569",
                "thumb_media_id": "M0XuzDLwlXU9peuUrjb9Qe48uLr6nKjJx4RG0fDokCY",
                "show_cover_pic": 1,
                "url": "http://mp.weixin.qq.com/s?__biz=MzI1MjQzMTkyOQ==&mid=100000003&idx=1&sn=358f34f026633383fbca6f6e36c472ec&chksm=69e29a555e951343c7dafe4607ce98bf5dac94605471287151ccc8a2c256d5af973b05be431f#rd",
                "thumb_url": "http://mmbiz.qpic.cn/mmbiz_jpg/bB6hzHJlViafXBbaUDpevw30ljShjyLBLCp8dB6vm9cEvgLRdiaS4hRdGB7XHGiaWJSm1ficic8Xic5ug4IRuzOPJQNw/0?wx_fmt=jpeg",
                "need_open_comment": 0,
                "only_fans_can_comment": 0
            }], "create_time": 1513765120, "update_time": 1513765120
        },
        "update_time": 1513765120
    }, {
        "media_id": "M0XuzDLwlXU9peuUrjb9Qc8o_ew72al1adP-f3ekr8Y",
        "content": {
            "news_item": [{
                "title": "test",
                "author": "liu",
                "digest": "微信公众号群发消息返回了错误码：. {\"errcode\":48008,\"errmsg\":\"no permis",
                "content": "微信公众号群发消息返回了错误码：. {\"errcode\":48008,\"errmsg\":\"no permission for this msgtype hint: [dfIlLA0569ge25]\"}. 这个是什么问题呢？群发以前一直都是好的，今天才出现这个问题！ 微信服务号群发消息毫无问题，有问题的只是测试号，难道测试号的这个接口出了啥故障？ 咨询了腾讯技术人员：腾讯技术",
                "content_source_url": "http://blog.csdn.net/qq_28506819/article/details/77986569",
                "thumb_media_id": "M0XuzDLwlXU9peuUrjb9Qe48uLr6nKjJx4RG0fDokCY",
                "show_cover_pic": 1,
                "url": "http://mp.weixin.qq.com/s?__biz=MzI1MjQzMTkyOQ==&mid=100000002&idx=1&sn=af72ab4ee3a75ed23dda836031654260&chksm=69e29a545e951342edd845f731c5b1c558f881a86456ccfbcdfaa6633d5de281f8d8a14603a8#rd",
                "thumb_url": "http://mmbiz.qpic.cn/mmbiz_jpg/bB6hzHJlViafXBbaUDpevw30ljShjyLBLCp8dB6vm9cEvgLRdiaS4hRdGB7XHGiaWJSm1ficic8Xic5ug4IRuzOPJQNw/0?wx_fmt=jpeg",
                "need_open_comment": 0,
                "only_fans_can_comment": 0
            }], "create_time": 1513764667, "update_time": 1513764667
        },
        "update_time": 1513764667
    }], "total_count": 2, "item_count": 2
}

//推送消息
// api.massSendImage("M0XuzDLwlXU9peuUrjb9Qe48uLr6nKjJx4RG0fDokCY", 'oOSzcwcS4Bx0lH1FRSiIwQ-BAn64', function (err, result) {
//     console.log(result)
// });

var request = require("request");

function getOptions(url, body) {
    var defer = Promise.defer();
    getToken().then(function (token) {
        defer.resolve({
            method: 'POST',
            url: url,
            qs: {access_token: token},
            body: body,
            json: true
        })
    });
    return defer.promise;
}

router.use('/', wechat(config).text(function (message, req, res, next) {
    // message为文本内容
    // FromUserName: 'oPKu7jgOibOA-De4u8J2RuNKpZRw',
    // CreateTime: '1359125035',
    // MsgType: 'text',
    // Content: 'http',
    // MsgId: '5837397576500011341' }
    var keyArray = ['你好', '约吗', '图片', '图文'];
    var content = message.Content;
    var keyIndex = keyArray.indexOf(content);
    switch (keyIndex) {
        case 0: {
            // add()
            res.reply({
                type: "text",
                content: '您好，大家好才是真的好！'
            });

        }
            break;
        case 1: {
            res.reply({
                type: "text",
                content: '不约，不约，叔叔我们不约！'
            });

        }
            break;
        case 2: {
            getOptions('http://api.weixin.qq.com/cgi-bin/message/custom/send', {
                "touser": "oOSzcwcS4Bx0lH1FRSiIwQ-BAn64",
                "msgtype": "image",
                "image":
                    {
                        "media_id": "uBDa5KzyLjOtrejUrPpp8_2FTd1sXtj_W8_5atyyWZOGU3lmNn7_mMfu39HHSTON"
                    }
            }).then(function (options) {
                request(options, function (error, response, body) {
                    if (error) throw new Error(error);
                    res.reply();
                    console.log(body);
                });
            })


        }
            break;
        case 3: {
            // getOptions('https://api.weixin.qq.com/customservice/kfaccount/add', {
            //     kf_account: 'test1@l482739560',
            //     nickname: '客服1',
            //     password: 'e10adc3949ba59abbe56e057f20f883e'
            // }).then(function (options) {
            //     request(options, function (error, response, body) {
            //         if (error) throw new Error(error);
            //         res.reply({
            //             type: "text",
            //             content: JSON.stringify(body)
            //         })
            //         console.log(JSON.stringify(body));
            //     });
            //
            // })
            res.reply([
                {
                    title: 'Nodejs微信开发',
                    description: 'by StuQ 桑世龙',
                    picurl: 'http://images.51cto.com/files/uploadimg/20111110/1113010.png',
                    url: 'https://cnodejs.org/'
                }
            ])
        }
            break;
        default:
            for (var i = 0; i < list.item.length; i++) {
                var news_item = list.item[i].content.news_item;
                for (var j = 0; j < news_item.length; j++) {
                    if (news_item[j].title.indexOf(message.Content) != -1) {
                        console.log(list.item[i].media_id);
                        // res.reply(news_item);
                        api.previewNews(message.FromUserName, list.item[i].media_id, function (err, result) {
                            console.log(result)
                        });
                        break;
                    }
                }
            }
            res.reply({
                type: "text",
                content: '服务器挂掉了，你的要求暂时无法满足……'
            });
            break;
    }
}).image(function (message, req, res, next) {
    // message为图片内容
    // { ToUserName: 'gh_d3e07d51b513',
    // FromUserName: 'oPKu7jgOibOA-De4u8J2RuNKpZRw',
    // CreateTime: '1359124971',
    // MsgType: 'image',
    // PicUrl: 'http://mmsns.qpic.cn/mmsns/bfc815ygvIWcaaZlEXJV7NzhmA3Y2fc4eBOxLjpPI60Q1Q6ibYicwg/0',
    // MediaId: 'media_id',
    // MsgId: '5837397301622104395' }}).voice(function(message, req, res, next) {
    // TODO
}).voice(function (message, req, res, next) {
    // message为音频内容
    // { ToUserName: 'gh_d3e07d51b513',
    // FromUserName: 'oPKu7jgOibOA-De4u8J2RuNKpZRw',
    // CreateTime: '1359125022',
    // MsgType: 'voice',
    // MediaId: 'OMYnpghh8fRfzHL8obuboDN9rmLig4s0xdpoNT6a5BoFZWufbE6srbCKc_bxduzS',
    // Format: 'amr',
    // MsgId: '5837397520665436492' }
}).video(function (message, req, res, next) {
    // message为视频内容
    // { ToUserName: 'gh_d3e07d51b513',
    // FromUserName: 'oPKu7jgOibOA-De4u8J2RuNKpZRw',
    // CreateTime: '1359125022',
    // MsgType: 'video',
    // MediaId: 'OMYnpghh8fRfzHL8obuboDN9rmLig4s0xdpoNT6a5BoFZWufbE6srbCKc_bxduzS',
    // ThumbMediaId: 'media_id',
    // MsgId: '5837397520665436492' }
    // TODO
}).shortvideo(function (message, req, res, next) {
    // message为短视频内容
    // { ToUserName: 'gh_d3e07d51b513',
    // FromUserName: 'oPKu7jgOibOA-De4u8J2RuNKpZRw',
    // CreateTime: '1359125022',
    // MsgType: 'shortvideo',
    // MediaId: 'OMYnpghh8fRfzHL8obuboDN9rmLig4s0xdpoNT6a5BoFZWufbE6srbCKc_bxduzS',
    // ThumbMediaId: 'media_id',
    // MsgId: '5837397520665436492' }
    // TODO
}).location(function (message, req, res, next) {
    // message为链接内容
    // { ToUserName: 'gh_d3e07d51b513',
    // FromUserName: 'oPKu7jgOibOA-De4u8J2RuNKpZRw',
    // CreateTime: '1359125022',
    // MsgType: 'link',
    // Title: '公众平台官网链接',
    // Description: '公众平台官网链接',
    // Url: 'http://1024.com/',
    // MsgId: '5837397520665436492' }
    // TODO
}).link(function (message, req, res, next) {
    // message为链接内容
    // { ToUserName: 'gh_d3e07d51b513',
    // FromUserName: 'oPKu7jgOibOA-De4u8J2RuNKpZRw',
    // CreateTime: '1359125022',
    // MsgType: 'link',
    // Title: '公众平台官网链接',
    // Description: '公众平台官网链接',
    // Url: 'http://1024.com/',
    // MsgId: '5837397520665436492' }
    // TODO
}).event(function (message, req, res, next) {
    // message为事件内容
    // { ToUserName: 'gh_d3e07d51b513',
    // FromUserName: 'oPKu7jgOibOA-De4u8J2RuNKpZRw',
    // CreateTime: '1359125022',
    // MsgType: 'event',
    // Event: 'LOCATION',
    // Latitude: '23.137466',
    // Longitude: '113.352425',
    // Precision: '119.385040',
    // MsgId: '5837397520665436492' }
    // TODO
}).device_text(function (message, req, res, next) {
    // message为设备文本消息内容
    // { ToUserName: 'gh_d3e07d51b513',
    // FromUserName: 'oPKu7jgOibOA-De4u8J2RuNKpZRw',
    // CreateTime: '1359125022',
    // MsgType: 'device_text',
    // DeviceType: 'gh_d3e07d51b513'
    // DeviceID: 'dev1234abcd',
    // Content: 'd2hvc3lvdXJkYWRkeQ==',
    // SessionID: '9394',
    // MsgId: '5837397520665436492',
    // OpenID: 'oPKu7jgOibOA-De4u8J2RuNKpZRw' }
    // TODO
}).device_event(function (message, req, res, next) {
    // message为设备事件内容
    // { ToUserName: 'gh_d3e07d51b513',
    // FromUserName: 'oPKu7jgOibOA-De4u8J2RuNKpZRw',
    // CreateTime: '1359125022',
    // MsgType: 'device_event',
    // Event: 'bind'
    // DeviceType: 'gh_d3e07d51b513'
    // DeviceID: 'dev1234abcd',
    // OpType : 0, //Event为subscribe_status/unsubscribe_status时存在
    // Content: 'd2hvc3lvdXJkYWRkeQ==', //Event不为subscribe_status/unsubscribe_status时存在
    // SessionID: '9394',
    // MsgId: '5837397520665436492',
    // OpenID: 'oPKu7jgOibOA-De4u8J2RuNKpZRw' }
    // TODO
}).middlewarify());

module.exports = router;
